package com.suanfa.collect;

/**
 * 乘积不超过K的连续子数组个数
 */
public class MutileK {

    public static void main(String[] args) {
        int[] arr ={1,2,3};
        int k = 0;
        System.out.println(getTotal(arr, k));
    }


    public static int getTotal(int[] arr, int k){
        if(k<=1){
            return 0;
        }
        int left = 0,right = 0;
        int multi = 1;
        int result = 0;
        while(right<arr.length){
            multi = multi* arr[right];

            while(multi >= k){
                multi = multi/arr[left];
                left++;
            }
            //每次右指针位移到一个新位置，应该加上 x 种数组组合：
            //  nums[right]
            //  nums[right-1], nums[right]
            //  nums[right-2], nums[right-1], nums[right]
            //  nums[left], ......, nums[right-2], nums[right-1], nums[right]
            result += right-left+1;
            right++;
        }
        return result;
    }
}
